package exception;

/**
 * Java异常处理机制中的try...catch
 * 语法：
 * try{
 * 正常的代码片段(A计划)
 * }catch(XXXException){
 * 当try中的代码出现了XXXException之后的处理代码(B计划)
 * }
 */
public class TryCatchDemo {
    public static void main(String[] args) {
        try {
            System.out.println("程序开始了");
            //String str =null;
            //System.out.println(str.length());//追责追到自己 直接终止
//            String str = "abc";
//            System.out.println(str.charAt(5));
            String str = "abc";
            System.out.println(Integer.parseInt(str));//将str转为整数

            /*
            try的代码不出现异常时，catch语句块是不执行的
            try中的代码出现异常时，剩余代码不会被执行
             */
            System.out.println("!!!!");
        } /*catch (NullPointerException e) {
            System.out.println("出现了空指针，并处理完毕了");
        } catch (StringIndexOutOfBoundsException e) {
            System.out.println("出现了字符串下标越界异常，并处理完毕了");
        }*/// //catch可以定义多个，针对不用异常有不同的处理方法以分别捕获处理
         /* catch (NullPointerException |StringIndexOutOfBoundsException e){
            System.out.println("出现了空指针或者字符串下标越界异常，并且用相同的方式处理完毕了");
        }  */catch (Exception e) {//捕获超类型异常，那么它的所有子类异常都可以被处理
            //如果catch的异常存在继承关系，那么子异常在上，父异常在下
            System.out.println("出错了");
        }
        System.out.println("结束");
    }
}